package com.dianneng.show.util;

import android.text.TextUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CommonUtil {
    /**
     * 判断字符串是否符合手机号码格式
     * 移动号段: 134,135,136,137,138,139,147,150,151,152,157,158,159,170,178,182,183,184,187,188
     * 联通号段: 130,131,132,145,155,156,170,171,175,176,185,186
     * 电信号段: 133,149,153,170,173,177,180,181,189
     * @param mobileNums
     * @return 待检测的字符串
     */
    public static boolean isMobileNO(String mobileNums) {
        String telRegex = "^((13[0-9])|(14[0-9])|(15[0-9])|(16[0-9])|(17[0-9])|(18[0-9])|(19[0-9]))\\d{8}$";// "[1]"代表下一位为数字可以是几，"[0-9]"代表可以为0-9中的一个，"[5,7,9]"表示可以是5,7,9中的任意一位,[^4]表示除4以外的任何一个,\\d{9}"代表后面是可以是0～9的数字，有9位。
        if (TextUtils.isEmpty(mobileNums))
            return false;
        else
            return mobileNums.matches(telRegex);
    }

    /**
     *邮箱有效性验证
     * @param email
     * @return
     */
    public static boolean isEmail(String email){
        if (null==email || "".equals(email)) return false;
        //Pattern p = Pattern.compile("\\w+@(\\w+.)+[a-z]{2,3}"); //简单匹配
        Pattern p =  Pattern.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");//复杂匹配
        Matcher m = p.matcher(email);
        return m.matches();
    }


    public static int getCurrentYear(){
        Calendar cd = Calendar.getInstance();
        return  cd.get(Calendar.YEAR);
    }

    public static int getCurrentDay(){
        Calendar cd = Calendar.getInstance();
        return  cd.get(Calendar.DAY_OF_MONTH);
    }

    public static int getOneMonth(){
        Calendar cd = Calendar.getInstance();
        return  cd.get(Calendar.MONTH)+1;
    }
    public static int getTwoMonth(){
        Calendar cd = Calendar.getInstance();
        int month=cd.get(Calendar.MONTH)+2;
        if (month>12)
            month=month-12;
        return  month;
    }

    public static int getThreeMonth(){
        Calendar cd = Calendar.getInstance();
        int month=cd.get(Calendar.MONTH)+3;
        if (month>12)
            month=month-12;
        return  month;
    }

    /**
     * 获取当前系统时间 月-日 时:分
     * @return
     */
    public static String getCurrentTime1(){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd HH:mm");// HH:mm:ss
        //获取当前时间
        Date date = new Date(System.currentTimeMillis());
        return simpleDateFormat.format(date);
    }

    /**
     * 获取当前系统时间 年-月
     * @return
     */
    public static String getCurrentTime2(){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");// HH:mm:ss
        //获取当前时间
        Date date = new Date(System.currentTimeMillis());
        return simpleDateFormat.format(date);
    }

    /**
     * 获取当前系统时间往后30天时间 年-月
     * @return
     */
    public static String getCurrentTime3(){

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        Date dBefore = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dBefore);
        calendar.add(Calendar.MONTH,1);//往上推一天  30推三十天  365推一年
        dBefore = calendar.getTime();
        return sdf.format(dBefore);
    }

    /**
     * 获取当前系统时间往后60天时间 年-月
     * @return
     */
    public static String getCurrentTime4(){

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        Date dBefore = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dBefore);
        calendar.add(Calendar.MONTH,2);//往上推一天  30推三十天  365推一年
        dBefore = calendar.getTime();
        return sdf.format(dBefore);
    }

    /**
     * 获取当前系统时间 年-月-日
     * @return
     */
    public static String getCurrentTime5(){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");// HH:mm:ss
        //获取当前时间
        Date date = new Date(System.currentTimeMillis());
        return simpleDateFormat.format(date);
    }

    /**
     * 获取当前系统时间往后1天时间 年-月-日
     * @return
     */
    public static String getCurrentTime6(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date dBefore = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dBefore);
        calendar.add(Calendar.DAY_OF_MONTH,1);//往上推一天  30推三十天  365推一年
        dBefore = calendar.getTime();
        return sdf.format(dBefore);
    }

    /**
     * 获取当前系统时间往前7天时间 年-月-日
     * @return
     */
    public static String getCurrentTime7(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date dBefore = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dBefore);
        calendar.add(Calendar.DAY_OF_MONTH,-7);//往上推一天  30推三十天  365推一年
        dBefore = calendar.getTime();
        return sdf.format(dBefore);
    }

    /**
     * 时间转换
     * @param time  年-月-日
     * @return
     */
    public static String getTime1(String time){
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd");// HH:mm:ss
        Date date = null;
        try {
            date = simpleDateFormat1.parse(time);
            return simpleDateFormat2.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
       return "";
    }

    /**
     * 时间转换
     * @param time  月-日
     * @return
     */
    public static String getTime8(String time){
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("MM-dd");// HH:mm:ss
        Date date = null;
        try {
            date = simpleDateFormat1.parse(time);
            return simpleDateFormat2.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 时间转换
     * @param time  年-月
     * @return
     */
    public static String getTime2(String time){
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM");// HH:mm:ss
        Date date = null;
        try {
            date = simpleDateFormat1.parse(time);
            return simpleDateFormat2.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 时间转换
     * @param time  月-日 时:分
     * @return
     */
    public static String getTime3(String time){
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("MM-dd HH:mm");// HH:mm:ss
        Date date = null;
        try {
            date = simpleDateFormat1.parse(time);
            return simpleDateFormat2.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 获取对应时间的毫秒数
     * @param time
     * @return
     */
    public static long getTime4(String time){
        if (TextUtils.isEmpty(time)){
            return new Date().getTime();
        }
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");// HH:mm:ss
        Date date = null;
        try {
            date = simpleDateFormat.parse(time);
        } catch (ParseException e) {
            e.printStackTrace();
            date=new Date();
        }
        return date.getTime();
    }

    /**
     * 时间转换 年-月-日 时:分
     * @param time
     * @return
     */
    public static String getTime5(String time){
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");// HH:mm:ss
        Date date = null;
        try {
            date = simpleDateFormat1.parse(time);
            return simpleDateFormat2.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 时间转换 时:分
     * @param time
     * @return
     */
    public static String getTime6(String time){
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("HH:mm");// HH:mm:ss
        Date date = null;
        try {
            date = simpleDateFormat1.parse(time);
            return simpleDateFormat2.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return "";
    }
    /**
     * 获取对应时间往后1天时间 年-月-日
     * @return
     */
    public static String getTime7(String time){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date dBefore = null;
        try {
            dBefore = sdf.parse(time);
        } catch (ParseException e) {
            e.printStackTrace();
            dBefore=new Date();
        }
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dBefore);
        calendar.add(Calendar.DAY_OF_MONTH,1);//往上推一天  30推三十天  365推一年
        dBefore = calendar.getTime();
        return sdf.format(dBefore);
    }

    /**
     * 获取对应时间的毫秒数
     * @param time
     * @return
     */
    public static long getTime9(String time){
        if (TextUtils.isEmpty(time)){
            return new Date().getTime();
        }
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
        Date date ;
        try {
            date = simpleDateFormat.parse(time);
        } catch (ParseException e) {
            e.printStackTrace();
            date=new Date();
        }
        return date.getTime();
    }

    /**
     * 时间转换
     * @param time  日
     * @return
     */
    public static String getTime10(String time){
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("d");// HH:mm:ss
        Date date = null;
        try {
            date = simpleDateFormat1.parse(time);
            return simpleDateFormat2.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return "";
    }


    /**
     * 时间转换
     * @param time  月
     * @return
     */
    public static String getTime12(String time){
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("M");// HH:mm:ss
        Date date = null;
        try {
            date = simpleDateFormat1.parse(time);
            return simpleDateFormat2.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 时间转换
     * @param time  年
     * @return
     */
    public static String getTime13(String time){
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy");// HH:mm:ss
        Date date = null;
        try {
            date = simpleDateFormat1.parse(time);
            return simpleDateFormat2.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 时间转换 时:分:秒
     * @param time
     * @return
     */
    public static String getTime11(String time){
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("HH:mm:ss");// HH:mm:ss
        Date date = null;
        try {
            date = simpleDateFormat1.parse(time);
            return simpleDateFormat2.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 判断是否是现货订单
     * @param time1
     * @param time2
     * @return
     */
    public static boolean isNowOrder(String time1,String time2){
        if (TextUtils.isEmpty(time1)||TextUtils.isEmpty(time2))
            return false;
        String text1=getTime1(time1);
        String text2=getTime1(time2);
        if (TextUtils.isEmpty(text1)||TextUtils.isEmpty(text2))
            return false;
        return text1.equals(text2);
    }

    /**
     * 判断是否是当前月份订单
     * @param time
     * @return
     */
    public static boolean isOneOrder(String time){
        if (TextUtils.isEmpty(time))
            return false;
        String text1=getTime2(time);
        String text2=getCurrentTime2();
        if (TextUtils.isEmpty(text1)||TextUtils.isEmpty(text2))
            return false;
        return text1.equals(text2);
    }


    /**
     * 判断是否是下一月份订单
     * @param time
     * @return
     */
    public static boolean isTwoOrder(String time){
        if (TextUtils.isEmpty(time))
            return false;
        String text1=getTime2(time);
        String text2=getCurrentTime3();
        if (TextUtils.isEmpty(text1)||TextUtils.isEmpty(text2))
            return false;
        return text1.equals(text2);
    }

    /**
     * 判断是否是下下月份订单
     * @param time
     * @return
     */
    public static boolean isThreeOrder(String time){
        if (TextUtils.isEmpty(time))
            return false;
        String text1=getTime2(time);
        String text2=getCurrentTime4();
        if (TextUtils.isEmpty(text1)||TextUtils.isEmpty(text2))
            return false;
        return text1.equals(text2);
    }
}
